package saee.bean;

import java.io.Serializable;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import org.primefaces.context.RequestContext;

import saee.dao.PessoaDAO;
import saee.modelo.Pessoa;

@SessionScoped
@ManagedBean(name = "loginBean")
public class LoginBean implements Serializable {
	/**
		 * 
		 */
	private static final long serialVersionUID = 1L;
	private Pessoa pessoa = new Pessoa();
	// private Perfil perfil;
	private String senhaNova;
	private String confirmaSenhaNova;

	public String getConfirmaSenhaNova() {
		return confirmaSenhaNova;
	}

	public void setConfirmaSenhaNova(String confirmaSenhaNova) {
		this.confirmaSenhaNova = confirmaSenhaNova;
	}

	public String getSenhaNova() {
		return senhaNova;
	}

	public void setSenhaNova(String senhaNova) {
		this.senhaNova = senhaNova;
	}

	

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public Pessoa getPessoa() {
		return pessoa;
	}

	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}

	/**
	 * Metodo que realiza o login do usuario.
	 * 
	 * @return
	 */
	public String efetuaLogin() {

		PessoaDAO pessoaDAO = new PessoaDAO();

		pessoa = pessoaDAO.existe(this.pessoa);
		boolean loginValido = pessoa.getId() != null;

		if (loginValido) {

			switch (pessoa.getPerfil()) {
			case PARCEIRO:
				return "vaga";
			case ADM:
				return "pessoa";
			case ALUNO:
				return "VAGA";
			default:
				return "login";
			}

		} else {
			FacesContext.getCurrentInstance().addMessage(
					null,
					new FacesMessage(FacesMessage.SEVERITY_INFO,
							"Login e/ou senha errados, tente novamente", null));
			this.pessoa = new Pessoa();
			return "login";
		}
	}

	public boolean isLogado() {
		return pessoa.getLogin() != null;
	}

	public String logout() {
		this.pessoa = new Pessoa();
		FacesContext facesContext = FacesContext.getCurrentInstance();
		HttpSession session = (HttpSession) facesContext.getExternalContext()
				.getSession(false);
		session.invalidate();
		facesContext.getExternalContext().getSessionMap().remove("vaga");
		facesContext.getExternalContext().getSessionMap().remove("pessoa");
		facesContext.getExternalContext().getSessionMap().remove("empresa");
		facesContext.getExternalContext().getSessionMap().remove("instituicao");
		facesContext.getExternalContext().getSessionMap().remove("curso");
		// JPAUtil.logoff();
		return "login";
	}

}
